e77e9c5b36ab974c198de8532a6c5fe0f6053d2e,json/src/main/java/org/teavm/flavour/json/emit/JsonSerializerEmitter.java,JsonSerializerEmitter,tryGetPredefinedSerializer,#String#,121

Before Change



    private String tryGetPredefinedSerializer(String className) {
        String serializer = predefinedSerializers.get(className);
        if (serializer == null) {
            if (classSource.isSuperType(Enum.class.getName(), className).orElse(false)) {
                serializer = EnumSerializer.class.getName();
            } else if (classSource.isSuperType(Map.class.getName(), className).orElse(false)) {
                serializer = MapSerializer.class.getName();
            } else if (classSource.isSuperType(Collection.class.getName(), className).orElse(false)) {
                serializer = ListSerializer.class.getName();
            }

After Change



    private Value<JsonSerializer> tryGetPredefinedSerializer(ReflectClass<?> cls) {
        Class<?> serializerType = !cls.isArray() ? predefinedSerializers.get(cls.getName()) : null;
        if (serializerType != null) {
            ReflectMethod ctor = em.getContext().findClass(serializerType).getDeclaredMethod("<init>");
            return em.emit(() -> (JsonSerializer) ctor.construct());
        }
        if (em.getContext().findClass(Enum.class).isAssignableFrom(cls)) {
            return em.emit(() -> new EnumSerializer());
        } else if (em.getContext().findClass(Map.class).isAssignableFrom(cls)) {
            return em.emit(() -> new MapSerializer());
        } else if (em.getContext().findClass(Collection.class).isAssignableFrom(cls)) {
            return em.emit(() -> new ListSerializer());
        }